package com.boe.common.util;

import kotlin.io.ByteStreamsKt;
import lombok.SneakyThrows;

import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

public class StreamUtil {

    /**
     * 读内容
     *
     * @param stream
     * @return
     */
    public static String readContentString(InputStream stream) {
        return new String(ByteStreamsKt.readBytes(stream), StandardCharsets.UTF_8);
    }


    /**
     * 写内容
     *
     * @param stream
     * @param value
     */
    @SneakyThrows
    public static void writeContentString(OutputStream stream, String value) {
        stream.write(value.getBytes(StandardCharsets.UTF_8));
    }


    /**
     * 流Copy, JDK>=9,尽量使用原生的transferTo， 该方法 为了弥补JDK8没有transferTo函数。
     *
     * @param inputStream
     * @param outputStream
     */
    public static Long transferTo(InputStream inputStream, OutputStream outputStream) {
        return ByteStreamsKt.copyTo(inputStream, outputStream, 10240);
    }
}
